<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>
    // 需求：将 'http://www.baidu.com/index.html?usrName=james&usrAge=18&usrGender=true'
    //      中的 ? 后的 数据 封装到 一个 对象中
    //      {
    //          usrName:'james',
    //          usrAge:18,
    //          usrGender:true
    //      }

    // 1.变量 字符串，和 保存 属性的 对象
    var url = 'http://www.baidu.com/index.html?usrName=james&usrAge=18&usrGender=true';
    var obj = {};

    // 2.按照 ? 拆分成数组
    var arr = url.split('?'); // ["http://www.baidu.com/index.html", "usrName=james&usrAge=18&usrGender=true"]
    //                                     0                                       1
    // 3.获取 数组 下标1 元素字符串，再 按照 & 拆分,  'usrName=james&usrAge=18&usrGender=true'
    arr = arr[1].split('&'); // ["usrName=james", "usrAge=18", "usrGender=true"]

    // 4.循环 arr 数组，取出 里面的 字符串，按照 = 拆分 ['usrName','james']
    for (var ele of arr) { //  ele = 'usrName=james'
      //5.将 键值对字符串 分割成 小数组
      var arr1 = ele.split('='); // ["usrName", "james"]
      //6.为 对象 动态添加属性
      //              属性名是 arr1[0] 属性值 arr1[1]
      obj[arr1[0]] = arr1[1];
    }

    // {usrName: "james", usrAge: "18", usrGender: "true"}
    console.log(obj);

  </script>
</body>
<!-- author:成都前端_JamesZou 
     from: https://www.jianshu.com/u/00a012fcb7e9
-->

</html>